package de.g18.llmaa.gui;

import java.util.ArrayList;
import java.util.HashMap;

import de.g18.llmaa.gui.workspace.Workspace_Crtl;
import de.g18.llmaa.logic.vos.VOKey_Type;
import de.g18.llmaa.logic.vos.VOProduct_Key;

public class App_LLMAA_Controler implements IApp_Controler {

	private static App_LLMAA_Controler instanze;

	/**
	 * Liste mit den zu informierenden Beobachtern.
	 */
	private ArrayList<IApp_Beobachter> list_Beobachter = new ArrayList<IApp_Beobachter>();

	private IApp_Model app_Model;

	App_LizenzVewaltung app ;

	private App_LLMAA_Controler() {

		app_Model = new App_LLMAA_Model();
		app = new App_LizenzVewaltung(this);
		// Registrieren des Workspace Controlers beim A
		registerBeobachter(Workspace_Crtl.getInstnace().getModel());
		app.setVisible(true);
	}

	public static App_LLMAA_Controler getInstanze() {
		if (instanze == null)
			instanze = new App_LLMAA_Controler();

		return instanze;
	}

	/**
	 * Aktualisierung der Beobachter über eine veränderung.
	 */
	private void aktualisiereBeobachter() {
		for (IApp_Beobachter beobachter : list_Beobachter) {
			beobachter.aktualisiere(app_Model);
		}

	}

	@Override
	public void registerBeobachter(IApp_Beobachter beobachter) {
		list_Beobachter.add(beobachter);

	}

	@Override
	public void setList_KeyTypes(HashMap<String, VOKey_Type> listKeyTypes) {
		
		app_Model.setList_KeyTypes(listKeyTypes);
	}

	@Override
	public void setList_ProductKey(ArrayList<VOProduct_Key> listProductKey) {
		app_Model.setList_ProductKey(listProductKey);
		aktualisiereBeobachter();

	}

	@Override
	public IApp_Model getModel() {
		// TODO Auto-generated method stub
		return app_Model;
	}

	public void setModel(IApp_Model model) {
		this.app_Model = model;
		aktualisiereBeobachter();
		
	}

}
